/*
 * @Description: 封装请求工具类
 * @fileName: index.js
 * @Author: LiSuwan
 * @Date: 2023-01-31 14:30:05
 * @LastEditors: LiSuwan
 * @LastEditTime: 2023-09-22 11:50:29
 */

import url from "./url";
import util from "./util";



var token = "";


/**
 * @Description: get请求方法
 * @Author: LiSuwan
 * @Date: 2023-02-02 10:47:18
 * @param {*} requestUrl
 * @param {*} params
 * @return {*}
 */
function getRequest(requestUrl, params) {
    return new Promise((resolve, reject) => {
        // 异步处理的封装通过promise比较好，并且要return出去
        token = uni.getStorageSync("token") || token;
        uni.request({
            // 在回调函数中处理异步请求
            url: url.baseUrl + "/cApi/api/" + requestUrl, //接口路径
            method: "GET", // 请求方法
            data: params, // 参数
            header: {
                "Content-Type": "application/json",
				// 'Clientid':'428a8310cd442757ae699df5d894f051',
                Authorization: "Bearer " + token,
            },
            success: (res) => {
                if (res.data.code == 401) {
                     resolve(res.data); //如果请求成功，调用resolve返回数据
                } else {
                    // 用箭头函数，res是返回来的数据
                    resolve(res.data); //如果请求成功，调用resolve返回数据
                }


            },
            fail: (err) => {
                // err 是返回来的错误信息
                reject(err); // 调用reject方法把错误消息返回出去
            },
        });
    });
}

/**
 * @Description: post请求方法
 * @Author: LiSuwan
 * @Date: 2023-02-02 10:47:18
 * @param {*} requestUrl
 * @param {*} params
 * @return {*}
 */
function postRequest(requestUrl, params, hearder = "application/json") {
    return new Promise((resolve, reject) => {
        // 异步处理的封装通过promise比较好，并且要return出去，
        token = uni.getStorageSync("token") || token;
        uni.request({
            // 在回调函数中处理异步请求
            url: url.baseUrl + "/cApi/api/" + requestUrl, //接口路径
            method: "POST", // 请求方法
            data: params, // 参数
            header: {
                "Content-Type": hearder,
				// 'Clientid':'428a8310cd442757ae699df5d894f051',
                Authorization: "Bearer " + token,
            },
            success: (res) => {
                if (res.data.code == 401) {
                     resolve(res.data); //如果请求成功，调用resolve返回数据
                } else {
                    // 用箭头函数，res是返回来的数据
                    resolve(res.data); //如果请求成功，调用resolve返回数据
                }
            },
            fail: (err) => {
                reject(err); // 调用reject方法把错误消息返回出去
            },
        });
    });
}


/**
 * @Description: put请求方法
 * @Author: LiSuwan
 * @Date: 2023-02-02 10:47:18
 * @param {*} requestUrl
 * @param {*} params
 * @return {*}
 */
function putRequest(requestUrl, params, hearder = "application/json") {
    return new Promise((resolve, reject) => {
        // 异步处理的封装通过promise比较好，并且要return出去，
        token = uni.getStorageSync("token") || token;
        uni.request({
            // 在回调函数中处理异步请求
            url: url.baseUrl + "/wdrs/" + requestUrl, //接口路径
            method: "put", // 请求方法
            data: params, // 参数
            header: {
                "Content-Type": hearder,
				// 'Clientid':'428a8310cd442757ae699df5d894f051',
                Authorization: "Bearer " + token,
            },
            success: (res) => {
                if (res.data.code == 401) {
                    util.isLogin(false, 401)
                } else {
                    // 用箭头函数，res是返回来的数据
                    resolve(res.data); //如果请求成功，调用resolve返回数据
                }
            },
            fail: (err) => {
                reject(err); // 调用reject方法把错误消息返回出去
            },
        });
    });
}



/**
 * @Description: 上传文件
 * @Author: LiSuwan
 * @Date: 2023-02-02 10:47:18
 * @param {*} requestUrl
 * @param {*} params
 * @return {*}
 */
function postFile(requestUrl, params) {
    return new Promise((resolve, reject) => {
        token = uni.getStorageSync("token") || token;
        uni.uploadFile({
            url: url.baseUrl + "/wdrs/" + requestUrl, //接口路径
            filePath: params.file,
            name: "file",
            formData: {
                token: token,
            },
            success: (uploadFileRes) => {
                if (uploadFileRes.data.code == -1004) {
                    uni.showToast({
                        icon: "none",
                        title: uploadFileRes.data.msg,
                    });
                } else {
                    resolve(uploadFileRes.data); //如果请求成功，调用resolve返回数据
                }
            },
            fail: (err) => {
                // err 是返回来的错误信息
                reject(err); // 调用reject方法把错误消息返回出去
            },
        });
    });
}

export default {
    get: getRequest, //get请求方法
    post: postRequest, //post请求方法
    postFile: postFile, //上传文件
    put: putRequest, //put请求方法
};